<?php
/**
 * Created by PhpStorm.
 * User: xiangpeng
 * Date: 2017/1/4
 * Time: 16:14
 */

namespace Home\Controller;


use Common\Model\GoodsModel;
use Org\Util\Cart;
use Think\Controller;

class CartController extends Controller
{
    //首页方法
    public function index(){

        ////处理清除session时报错处理
        $data = $_SESSION['cart'] ? $_SESSION['cart'] : [];
        //获得该商品的图片
        foreach ($data['goods'] as $k=>$v){
                $data['goods'][$k]['pic']= (new GoodsModel())->where("gid={$v['id']}")->getField('pic');
        }

        //dd($_SESSION);DIE;
        //dd($data);
        //购物车情况
        //1.需要判断是否登录 分游客和用户两种情况
        //1.1游客的情况
        if(!session('home.uid')){
            //如果是游客就读session中的数据 三元表达式
            $data  = $_SESSION['cart']  ?  $_SESSION['cart']['goods'] :  [];
            //因为hd购物车类没有pic，需要我们自己获取
            foreach($data as $k=>$v){
                $data[$k]['pic'] = (new GoodsModel())->where("gid={$v['id']}")->getField('pic');
            }
            //获取购物车总商品数和总价格
            $total_rows   =  $_SESSION['cart']['total_rows'];
            $total     =  $_SESSION['cart']['total'];

        }else{//1.2如果是用户登录就读取cart表中的数据
            //获取用户id
            $uid    =session('home.uid');
            //获取用户的所有商品数据
            $cartModel   = m('cart');
            $data  = $cartModel->where("uid={$uid}")->select();
            //获得商品的总价格和总数量
            $total  =  0;
            $total_rows    =0;
            foreach($data  as $k=>$v){
                $total_rows  +=  $v['num'];
                $total     +=  $v['total'];
            }

        }
        //dd($data);
        //分配数据
        $this->assign('data',$data);
        $this->assign('$total_rows',$total_rows);
        $this->assign('$total',$total);
        //分配头部js
        $conf=[
            'js'=>['list'],
            'css'=>['index']
        ];
        $this->assign('conf',$conf);
        //加载模板
        $this->display();
    }


    //异步获取购物车商品数量
    public function ajaxGetCartNum(){
        if(IS_AJAX){
            //获得购物车的数据
            // 1.判断用户是否登录，登录就获取cart表里的商品数据
            $uid   =session('home.uid');
            if($uid){
                $count  = M('cart')->where("uid={$uid}")->count();

            }else{   //游客的时候就获取session的数据,如果就获取，没有就是0
                if(isset($_SESSION['cart']['goods'])){
                    $count   = count($_SESSION['cart']['goods']);
                }else{
                    $count   =  0;
                }

            }

            //将统计数量输出
            echo $count;
        }

    }

    //异步获取购物车数据（hover出现下拉我的购物车模块）
    public  function ajaxGetCartData(){
        if(IS_AJAX){
            //两种可能，判断是登录，和游客两种情况
            $uid    =  session('home.uid');
            if($uid){  //用户登录的情况
                //获得cart表的数据
                $data  =  m('cart')->where("uid={$uid}")->select();
                if($data){
                    echo  json_encode($data,JSON_UNESCAPED_UNICODE);
                }else{
                    echo 0;
                }
            }else{
                //游客的情况，就获取session的数据
                $data   =  $_SESSION['cart']['goods'];
                //session()中是没有pic的字段的，需要重组
                foreach($data as $k=>$v){
                    $data[$k]['pic'] = (new GoodsModel())->where("gid={$v['id']}")->getField('pic');
                }
                //判断data是否为真，
                if($data){
                    echo json_encode($data,JSON_UNESCAPED_UNICODE);
                }else{
                    echo 0;
                }

            }
        }
    }





    //异步删除购物车数据（hover出现下拉我的购物车模块）
    public  function  ajaxDelCartData(){
       if(IS_AJAX){
           //登录状态
           $uid   = session('home.uid');
           if($uid){
               //获得post提交过来的acid
               $acid   =   I('post.acid');
               //执行删除
               m('cart')->where("acid={$acid}")->delete();
                echo 1;
           }else{  //游客状态
               //获得post提交的sid(订单号)
                $sid  = I('post.sid');
                //执行删除
               unset($_SESSION['cart']['goods'][$sid]);
               echo 1;
           }

       }

    }


    //异步修改购物车数据
    public function ajaxUpdateCart(){
        if(IS_AJAX){
            //dd($_POST);die;
            $data=[
                'sid'=>$_POST['sid'],
                'num'=>$_POST['num'],
            ];
            //执行更改
            (new Cart())->update($data);

            //判断是否是登录，是登录就需要更新购物车的商品数据
            $uid  =  session('home.uid');
            $cart  = m('cart');
            $acid   =  $_POST['acid'];
            $num   =  $_POST['num'];

            if($uid){
                //重组更新的数据  价格，数量， 总价格
                $price  = $cart->where("uid={$uid}")->getField('price');
                $total   = $price*$num;
                $data  = [
                    'price'=>$price,
                    'num' => $num,
                    'total'=>$total
                ];
            }

            echo 1;die;
        }

    }



    //异步删除购物车中的一条数据
    public function ajaxDelCartGoods(){
        if(IS_AJAX){
            $del_sid = $_POST['sid'];
            $caid = $_POST['caid'];
            (new Cart())->del($del_sid);
            //dd($_POST);
            //判断是否是登录状态，如果是，则需要更新该用户的购物车数据
            $uid = session('home.uid');
            $user_cart = m('cart');
            if($uid){
                $user_cart->where("caid={$caid}")->delete();
            }
        }
    }

}